package net.lab1024.sa.admin.module.business.wms.domain.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Data;

/**
 * 仓库信息表 实体类
 *
 * @Author ADog
 * @Date 2025-10-17 17:25:29
 * @Copyright 1.0
 */

@Data
@TableName("wms_warehouse")
public class WarehouseEntity {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long warehouseId;

    /**
     * 仓库编码（唯一，如“XM-MJ001”表示厦门模具仓）
     */
    private String warehouseCode;

    /**
     * 仓库名称（如“厦门总仓-精密模具库”）
     */
    private String warehouseName;

    /**
     * 仓库类型：1-模具仓、2-零件仓、3-成品仓、4-原材料仓
     */
    private Integer warehouseType;

    /**
     * 仓库级别（1-总仓、2-分仓、3-子仓，用于层级区分）
     */
    private Integer warehouseLevel;

    /**
     * 仓库详细地址（如“厦门市集美区杏林工业园3号厂房”）
     */
    private String warehouseLocation;

    /**
     * 仓库总面积（㎡）
     */
    private BigDecimal warehouseArea;

    /**
     * 仓库负责人（日常运营）
     */
    private String warehouseHead;

    /**
     * 安全责任人（专管安全检查）
     */
    private String safetyManager;

    /**
     * 安全等级：1-高（24h监控）、2-中、3-低
     */
    private Integer safetyLevel;

    /**
     * 最后一次安全检查时间
     */
    private LocalDateTime lastSafetyCheckTime;

    /**
     * 父仓库ID（0表示顶级仓库，用于层级关联）
     */
    private Long parentId;

    /**
     * 祖级ID列表（如“1,2”表示父级+祖父级，用于快速查询层级）
     */
    private String ancestors;

    /**
     * 仓库最大容量（m³）
     */
    private BigDecimal maxVolume;

    /**
     * 仓库最大承重（kg）
     */
    private BigDecimal maxWeight;

    /**
     * 环境特性（JSON格式，如{"temperature":"25±2℃","humidity":"40%-60%","antiStatic":true}）
     */
    private String environmentFeatures;

    /**
     * 设备配置（如“叉车2台、行车1台、恒温系统1套”）
     */
    private String equipmentConfig;

    /**
     * 关联库存总数（非实时，定时同步，用于删除校验）
     */
    private Integer stockCount;

    /**
     * 最后一次库存同步时间
     */
    private LocalDateTime lastStockSyncTime;

    /**
     * 叶子节点标志：0-非叶子（有子仓库）、1-叶子（无子仓库）
     */
    private Integer leafFlag;

    /**
     * 是否禁用：0-启用、1-禁用
     */
    private Integer isDisabled;

    /**
     * 是否删除：0-未删、1-已删
     */
    private Integer isDeleted;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 备注（如“存放高精度模具，禁止无关人员进入”）
     */
    private String remark;

}
